#define DEBUG
#include <cstdio>
#include <cmath>
#define MAXN 1000000

using namespace std;

void sort(int *a, int *b, int l, int r) {
  int i=l, j=r, mid=a[(l+r)/2], temp;
  for (; i<=j; ) {
    for (; a[j]>mid; j--);
    for (; a[i]<mid; i++);
    if (i<=j) {
      temp=a[i], a[i]=a[j], a[j]=temp;
      temp=b[i], b[i]=b[j], b[j]=temp;
      i++, j--;
    }
  }
  if (i<r) {
    sort(a, b, i, r);
  }
  if (j>l) {
    sort(a, b, l, j);
  }
}

double calc(int a[], int b[]) {
  return (double)(b[1]-a[1])/(a[0]-b[0]);
}

double min(double a, double b) {
  return a<b ? a : b;
}

int main() {
#ifdef DEBUG
  freopen("4640.in", "r", stdin);
  freopen("4640.out", "w", stdout);
#endif

  int n;
  static int atk[MAXN+1], dnf[MAXN+1], que[MAXN+1][2];
  scanf("%d", &n);
  for (int i=1; i<=n; i++) {
    scanf("%d %d", atk+i, dnf+i);
  }
  sort(atk, dnf, 1, n);
  int t=0;
  for (int i=1; i<=n; i++) {
    if (t<1) {
      que[++t][0]=atk[i];
      que[t][1]=dnf[i];
    } else {
      int temp[2]={atk[i], dnf[i]};
      for (; 1<=t && ((que[t][0]==temp[0] && que[t][1]<=temp[1]) || (t>1 && que[t][0]!=temp[0] && calc(que[t-1],que[t])>=calc(que[t-1], temp))); t--);
      if (t<1 || que[t][0]!=temp[0]) {
	t++;
	que[t][0]=temp[0], que[t][1]=temp[1];
      }
    }
  }

  double x=sqrt(que[1][1]/que[1][0]), l, r, ans=1e9;
  r = t>=2 ? calc(que[1], que[2]) : 1;
  if (t<2 || x<=r) {
    ans=x*que[1][0]+1/x*que[1][1]+que[1][0]+que[1][1];
  } else {
    if (r>0) {
      ans=r*que[1][0]+1/r*que[1][1]+que[1][0]+que[1][1];
    }
  }
  for (int i=2; i<t; i++) {
    x=sqrt(que[i][1]/que[i][0]);
    l=calc(que[i-1], que[i]), r=calc(que[i], que[i+1]);
    if (x>=l && x<=r) {
      ans = min(x*que[i][0]+1/x*que[i][1]+que[i][0]+que[i][1], ans);
    } else if (x<l) {
      ans = min(l*que[i][0]+1/l*que[i][1]+que[i][0]+que[i][1], ans);
    } else if (x>r) {
      ans = min(r*que[i][0]+1/r*que[i][1]+que[i][0]+que[i][1], ans);
    }
  }
  x=sqrt(que[t][1]/que[t][0]);
  l = t>=2 ? calc(que[t-1], que[t]) : 1;
  if (t<=2 || x>=l) {
    ans=min(x*que[t][0]+1/x*que[t][1]+que[t][0]+que[t][1], ans);
  } else {
    ans=min(l*que[t][0]+1/l*que[t][1]+que[t][0]+que[t][1], ans);
  }

  printf("%.4lf", ans);

  fclose(stdin);
  fclose(stdout);
  return 0;
}
